home *** CD-ROM | disk | FTP | other *** search
Wrap
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' SuperJAM! installation script ' Modified from Setup Toolkit's SAMPLE1.MST ' by David Rosenbaum ' ' Outline of SuperJAM! setup procedure: ' ' x Introduce the setup program ' ' x Check for system compatibility ' ' x Ask for destination directory ' ' x Check for room on destination drive(s) ' ' x Get registration information ' ' x Install files ' ' x Add program manager group which includes SuperJAM! icon and demo ' song icon ' ' x Add association of .SJM files to SuperJAM! in file manager ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''$DEFINE DEBUG ''Define for script development/debugging '$INCLUDE 'setupapi.inc' '$INCLUDE 'msdetect.inc' ' ' Dialog ID's ' CONST ASKQUIT = 200 CONST BADSERNUM = 7806 CONST BADWINVERSION = 1000 CONST CONFIRMREGISTRATIONINFO = 7300 CONST EXITFAILURE = 400 CONST EXITSUCCESS = 700 CONST EXITQUIT = 600 CONST GETDESTPATH = 300 CONST GETREGISTRATIONINFO = 7801 CONST NONAME = 7805 CONST NOTENOUGHROOM = 1100 CONST UNWRITABLEDESTDIR = 7804 CONST UNWRITABLESRCDIR = 7802 ' ' Bitmap ID ' CONST LOGO = 1 ' ' From windows.h: ' CONST WS_VISIBLE=&H10000000 CONST WS_BORDER =&H00800000 CONST WS_CLIPCHILDREN =&H02000000 CONST GWL_STYLE =-16 CONST SW_SHOWMAXIMIZED=3 ' ' Forward declarations ' DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION ShowWindow LIB "user.exe" (hWnd%,iShow%) AS INTEGER DECLARE FUNCTION SetWindowLong LIB "user.exe" (hWnd%, offset%, style&) AS LONG DECLARE SUB munge LIB "mscuistf.dll" ( sz$ ) DECLARE FUNCTION getnamesernum LIB "mscuistf.dll" ( libName$, custName$, serNum$ ) AS INTEGER DECLARE FUNCTION stringtoboolean2 LIB "mscuistf.dll" ( sz$ ) AS INTEGER DECLARE FUNCTION stringtoboolean1 LIB "mscuistf.dll" ( sz$ ) AS INTEGER ' ' Execution "starts" here ' INIT: ' Maximize the window hWnd%=HwndFrame() l&=SetWindowLong(hWnd%,GWL_STYLE,WS_VISIBLE+WS_BORDER+WS_CLIPCHILDREN) i%=ShowWindow(hWnd%,SW_SHOWMAXIMIZED) '$IFDEF DEBUG i% = SetCopyMode( 0 ) '$ENDIF ''DEBUG _cuiDLL$ = "mscuistf.dll" ''Custom user interface dll SetBitmap _cuiDLL$, LOGO SetTitle "SuperJAM! Setup" infFile$ = GetSymbolValue("STF_SRCINFPATH") IF infFile$ = "" THEN infFile$ = GetSymbolValue("STF_CWDDIR") + "SJAM.INF" END IF prev% = ShowWaitCursor() ReadInfFile infFile$ RestoreCursor prev% _srcDir$ = GetSymbolValue("STF_SRCDIR") winDrive$ = MID$(GetWindowsDir, 1, 1) _destDir$ = winDrive$ + ":\SUPERJAM" _extraCosts$ = "ExtraCosts" FOR i% = 1 TO 26 STEP 1 AddListItem _extraCosts$, "0" NEXT i% ''Add extra cost to Windows drive for ini/progman, etc. drive% = ASC(ucase$(winDrive$)) - ASC("A") + 1 ReplaceListItem _extraCosts$, drive%, "10240" '$IFDEF DEBUG i% = SetSizeCheckMode( scmOnIgnore ) '' could use scmOff; def = scmOnFatal '$ENDIF ''DEBUG CHECKWINVERSION: _majorVersion% = GetWindowsMajorVersion() _minorVersion% = GetWindowsMinorVersion() '$IFDEF DEBUG _majorVersion = 3 _minorVersion = 0 '$ENDIF ''DEBUG IF _majorVersion < 3 OR (_majorVersion = 3 AND _minorVersion < 1) THEN GOSUB BADWINVERSION END IF GETPATHINIT: SetSymbolValue "EditTextIn", _destDir$ SetSymbolValue "EditFocus", "END" GETPATH: ret$ = UIStartDlg( _cuiDLL$, GETDESTPATH, "FEditDlgProc", 0, "" ) _destDir$ = GetSymbolValue("EditTextOut") IF ret$ = "CONTINUE" THEN UIPop 1 prev% = ShowWaitCursor() i% = IsDirWritable( _destDir$ ) RestoreCursor prev% IF i% = 0 THEN GOSUB UNWRITABLEDESTDIR GOTO GETPATH END IF ELSEIF ret$ = "REACTIVATE" THEN GOTO GETPATH ELSE GOSUB ASKQUIT GOTO GETPATHINIT END IF CHECKSIZE: prev% = ShowWaitCursor() ClearCopyList AddSectionFilesToCopyList "Files", _srcDir$, _destDir$ DestDrive$ = MID$( _destDir$, 1, 1 ) drive% = ASC( ucase$( DestDrive$ ) ) - ASC( "A" ) + 1 ''Add extra cost to destination drive for LOGFILE.OUT ReplaceListItem _extraCosts$, drive%, "10240" _stillNeed& = GetCopyListCost( _extraCosts$, "", "" ) RestoreCursor prev% IF _stillNeed& > 0 THEN GOSUB NOTENOUGHROOM ReplaceListItem _extraCosts$, drive%, "0" GOTO GETPATH END IF GETREGISTRATIONINFOINIT: fileName$ = GetSectionKeyFilename( "Files", "BRMIDI" ) pathName$ = MakePath( _srcDir$, fileName$ ) custName$ = STRING$( 40, "x" ) serNum$ = STRING$( 20, "x" ) prev% = ShowWaitCursor() i% = getnamesernum( pathName$, custName$, serNum$ ) RestoreCursor prev% 'j% = DoMsgBox( custName$ + serNum$, pathName$ + STR$( i% ), MB_TASKMODAL+MB_ICONHAND+MB_OK ) '$IFNDEF DEBUG if stringtoboolean2( serNum$ ) = 0 THEN GOTO INSTALL END IF '$ENDIF SetSymbolValue "NameIn", "" SetSymbolValue "SerNumIn", "" SetSymbolValue "CurrentControl", "NAME" GETREGISTRATIONINFO: ret$ = UIStartDlg(_cuiDLL$, GETREGISTRATIONINFO, "FNameSerNumDlgProc", 0, "") IF ret$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO GETREGISTRATIONINFO END IF _custNameOut$ = GetSymbolValue( "NameOut" ) _serNumOut$ = GetSymbolValue( "SerNumOut" ) SetSymbolValue "NameIn", _custNameOut$ SetSymbolValue "SerNumIn", _serNumOut$ IF LEN( _custNameOut$ ) <= 0 THEN ret$ = UIStartDlg( _cuiDLL$, NONAME, "FInfo0DlgProc", 0, "" ) UIPop 1 SetSymbolValue "CurrentControl", "NAME" GOTO GETREGISTRATIONINFO END IF IF stringtoboolean1( _serNumOut$) = 0 THEN ret$ = UIStartDlg( _cuiDLL$, BADSERNUM, "FInfo0DlgProc", 0, "" ) UIPop 1 SetSymbolValue "CurrentControl", "SERNUM" GOTO GETREGISTRATIONINFO END IF CONFIRMREGISTRATIONINFOINIT: AddListItem "ConfirmTextIn", "" AddListItem "ConfirmTextIn", "" AddListItem "ConfirmTextIn", "" ReplaceListItem "ConfirmTextIn", 1, _custNameOut$ ReplaceListItem "ConfirmTextIn", 2, _serNumOut$ CONFIRMREGISTRATIONINFO: ret$ = UIStartDlg( _cuiDLL$, CONFIRMREGISTRATIONINFO, "FConfirmDlgProc", 0, "" ) IF ret$ = "CONTINUE" THEN UIPop 1 ELSEIF ret$ = "REACTIVATE" THEN GOTO CONFIRMREGISTRATIONINFOINIT ELSEIF ret$ = "BACK" THEN UIPop 1 GOTO GETREGISTRATIONINFO ELSE GOSUB ASKQUIT GOTO CONFIRMREGISTRATIONINFOINIT END IF munge _custNameOut$ munge _serNumOut$ stamp$=CHR$(LEN(_custNameOut$))+_custNameOut$+CHR$(LEN(_serNumOut$))+_serNumOut$ CHECKWRITABLEFLOPPY: IF IsDirWritable(_srcDir$) = 0 THEN GOSUB UNWRITABLESRCDIR GOTO CHECKWRITABLEFLOPPY END IF prev% = ShowWaitCursor() StampResource "Files", "BRMIDI", _srcDir$, 6, &H272, stamp$, LEN(stamp$) RestoreCursor prev% INSTALL: prev% = ShowWaitCursor() CreateDir _destDir$, cmoNone OpenLogFile MakePath(_destDir$, "LOGFILE.OUT"), 0 WriteToLogFile "" WriteToLogFile " User chose as destination directory: '" + _destDir$ + "'" WriteToLogFile "" WriteToLogFile " May have had to create the directory: " + _destDir$ WriteToLogFile "" RestoreCursor prev% CopyFilesInCopyList progName$ = "SuperJAM!" pathName$ = MakePath( _destDir$, "superjam.exe") '$IFNDEF DEBUG CreateProgmanGroup progName$, "", cmoNone ShowProgmanGroup progName$, 1, cmoNone CreateProgmanItem progName$, progName$, pathName$, "", cmoOverwrite CreateProgmanItem progName$, "Demo Song", pathName$ + " SONGS\demo.sjm", pathName$ + ",8", cmoOverwrite '$ENDIF ''DEBUG CreateIniKeyValue "win.ini", "Extensions", "sjm", pathName$ + " ^.sjm", cmoOverWrite CloseLogFile ' ' This is the ON ERROR target for everything else ' QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = EXITSUCCESS ELSEIF ERR = STFQUIT THEN dlg% = EXITQUIT ELSE dlg% = EXITFAILURE END IF QUITL1: ret$ = UIStartDlg(_cuiDLL$, dlg%, "FInfo0DlgProc", 0, "") IF ret$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 END ERRQUIT: i% = DoMsgBox("Setup sources were corrupted. Please call Blue Ribbon Technical Support at (404)315-0212", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) END BADWINVERSION: 'i% = DoMsgBox( "You seem to be running Windows" + STR$( _majorVersion ) + "." + LTRIM$( STR$( _minorVersion ) ) + ". SuperJAM! requires Windows 3.1 or above.", "Required Windows Version", MB_TASKMODAL+MB_ICONHAND+MB_OK ) ret$ = UIStartDlg( _cuiDLL$, BADWINVERSION, "FQuitDlgProc", 0, "" ) IF ret$ = "EXIT" THEN UIPop 1 ERROR STFERR ELSEIF ret$ = "REACTIVATE" THEN GOTO BADWINVERSION ELSE UIPop 1 END IF RETURN UNWRITABLEDESTDIR: ret$ = UIStartDlg(_cuiDLL$, UNWRITABLEDESTDIR, "FQuitDlgProc", 0, "") IF ret$ = "EXIT" THEN UIPop 1 ERROR STFERR ELSEIF ret$ = "REACTIVATE" THEN GOTO UNWRITABLEDESTDIR ELSE UIPop 1 END IF RETURN NOTENOUGHROOM: SetSymbolValue "KStillNeeded", STR$( _stillNeed& / 1024 ) ret$ = UIStartDlg( _cuiDLL$, NOTENOUGHROOM, "FNotEnoughRoomDlgProc", 0, "" ) IF ret$ = "EXIT" THEN UIPop 1 ERROR STFERR ELSEIF ret$ = "REACTIVATE" THEN GOTO NOTENOUGHROOM ELSE UIPop 1 END IF RETURN UNWRITABLESRCDIR: ret$ = UIStartDlg( _cuiDLL$, UNWRITABLESRCDIR, "FQuitDlgProc", 0, "" ) IF ret$ = "EXIT" THEN UIPop 1 ERROR STFERR ELSEIF ret$ = "REACTIVATE" THEN GOTO UNWRITABLESRCDIR ELSE UIPop 1 END IF RETURN ASKQUIT: ret$ = UIStartDlg(_cuiDLL$, ASKQUIT, "FQuitDlgProc", 0, "") IF ret$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF ret$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' FUNCTION MakePath ' ' Purpose: ' Appends a file name to the end of a directory path, ' inserting a backslash character as needed. ' Arguments: ' pathName$ - full directory path (with optional ending "\") ' fileName$ - file name to append to directory ' Returns: ' Resulting fully qualified path name. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' FUNCTION MakePath (pathName$, fileName$) STATIC AS STRING IF pathName$ = "" THEN MakePath = fileName$ ELSEIF fileName$ = "" THEN MakePath = pathName$ ELSEIF MID$(pathName$, LEN(pathName$), 1) = "\" THEN MakePath = pathName$ + fileName$ ELSE MakePath = pathName$ + "\" + fileName$ END IF END FUNCTION